package com.ins.model.entity;

import com.mybatisflex.annotation.Column;
import com.mybatisflex.annotation.Table;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.io.Serial;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 支付记录列表 实体类。
 *
 * @author ins
 * @since 2024-05-14
 */
@EqualsAndHashCode(callSuper = true)
@Data
@Table(value = "app_payment")
public class AppPayment extends BaseEntity<AppPayment> implements Serializable {

    @Serial
    private static final long serialVersionUID = 8148657690515218509L;
    /**
     * 用户uuid
     */
    @Column(value = "user_id")
    private Long userId;

    /**
     * 支付流水号
     */
    @Column(value = "pay_no")
    private String payNo;

    /**
     * 第三方付款成功交易号
     */
    @Column(value = "trade_no")
    private String tradeNo;

    /**
     * 订单类型 1充值
     */
    @Column(value = "order_type")
    private Integer orderType;

    /**
     * 充值订单表uuid
     */
    @Column(value = "order_id")
    private Long orderId;

    /**
     * 付款方式 1微信 2支付宝
     */
    @Column(value = "pay_way")
    private Integer payWay;

    /**
     * 支付状态 1 支付成功，2 支付失败
     */
    @Column(value = "pay_status")
    private Integer payStatus;

    /**
     * 步骤 1 创建支付，2 支付回调通知
     */
    @Column(value = "step")
    private Integer step;

    /**
     * 请求支付状态，1：成功，2：失败
     */
    @Column(value = "post_status")
    private Integer postStatus;

    /**
     * 回调状态，1：成功，2：失败
     */
    @Column(value = "return_status")
    private Integer returnStatus;

    /**
     * 支付价格
     */
    @Column(value = "total_fee")
    private BigDecimal totalFee;

    /**
     * 第三方返回错误码
     */
    @Column(value = "result_code")
    private String resultCode;

    /**
     * 第三方返回的错误记录
     */
    @Column(value = "err_code_str")
    private String errCodeStr;

    /**
     * 货币类型
     */
    @Column(value = "currency")
    private String currency;

    /**
     * ip2long
     */
    @Column(value = "ip2long")
    private Integer ip2long;

    /**
     * 提交post json 数据
     */
    @Column(value = "post_json")
    private String postJson;

    /**
     * 回调post return data json
     */
    @Column(value = "return_json")
    private String returnJson;

    /**
     * 支付成功时间
     */
    @Column(value = "pay_time")
    private LocalDateTime payTime;

    /**
     * 手续费比例，千位比。6/1000
     */
    @Column(value = "procedure_kb")
    private Integer procedureKb;

    /**
     * 支付渠道收取手续费金额
     */
    @Column(value = "procedure_fee")
    private BigDecimal procedureFee;


}
